package net.hands.common.mail;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 
 * 说明:接受邮件
 * <br>
 * <p>这是一个开源的软件，请在LGPLv3下合法使用、修改或重新发布。</p>
 * @author 陈侃(cknet@126.com, 13910090885)
 *         http://code.google.com/p/simpleframework/
 *         http://www.simpleframework.net
 */
public class ReceivedEmail extends CommonEmail {
   /**
    * 回复
    */
	public static final int ANSWERED = 1;
	/**
	 * 删除
	 */
	public static final int DELETED = 2;
	/**
	 * 草稿
	 */
	public static final int DRAFT = 4;
	/**
	 * 标志的
	 */
	public static final int FLAGGED = 8;
	/**
	 * 新到的
	 */
	public static final int RECENT = 16;
	/**
	 * 看过的
	 */
	public static final int SEEN = 32;
	/**
	 * 用户
	 */
	public static final int USER = 0x80000000;

	// ---------------------------------------------------------------- number
	// and flag
   /**
    * 邮件号
    */
	protected int messageNumber;
   /**
   * 说明:获得邮件号 
   * @return int
   * @update 2012-9-21 上午11:20:57
    */
	public int getMessageNumber() {
		return messageNumber;
	}
   /**
   * 说明:设置邮件号
   * @param messageNumber 邮件号
   * @update 2012-9-21 上午11:21:11
    */
	public void setMessageNumber(final int messageNumber) {
		this.messageNumber = messageNumber;
	}
   /**
    * 标志
    */
	protected int flags;
   /**
   * 说明:获得标志 
   * @return  int
   * @update 2012-9-21 上午11:22:07
    */
	public int getFlags() {
		return flags;
	}
   /**
   * 说明:设置标志
   * @param flags 标志
   * @update 2012-9-21 上午11:22:26
    */
	public void setFlags(final int flags) {
		this.flags = flags;
	}
   /**
   * 说明:添加标志
   * @param flag 标志
   * @update 2012-9-21 上午11:22:37
    */
	public void addFlags(final int flag) {
		this.flags |= flag;
	}
   /**
   * 说明:移除标志 
   * @param flag 标志
   * @update 2012-9-21 上午11:23:32
    */
	public void removeFlags(final int flag) {
		this.flags &= ~flag;
	}
   /**
   * 说明:是否有标志
   * @param flags 标志
   * @return boolean 
   * @update 2012-9-21 上午11:23:45
    */
	public boolean hasFlags(final int flags) {
		return (this.flags & flags) != 0;
	}

	// ---------------------------------------------------------------- date
   /**
    * 接受日期
    */
	protected Date recvDate;
   /**
   * 说明:设置接受日期
   * @param date
   * @update 2012-9-21 上午11:24:09
    */
	public void setReceiveDate(final Date date) {
		recvDate = date;
	}
   /**
   * 说明:获得接受日期
   * @return Date
   * @update 2012-9-21 上午11:24:20
    */
	public Date getReceiveDate() {
		return recvDate;
	}

	// ----------------------------------------------------------------
	// attachments
   /**
    * 附件
    */
	protected List<EmailAttachment> attachments;
   /**
   * 说明:添加附件
   * @param filename 文件名
   * @param mimeType 协议类型
   * @param contentId 内容id
   * @param content 内容
   * @update 2012-9-21 上午11:31:31
    */
	public void addAttachment(final String filename, final String mimeType, final String contentId,
			final byte[] content) {
		if (attachments == null) {
			attachments = new ArrayList<EmailAttachment>();
		}
		final EmailAttachment emailAttachment = new ByteArrayAttachment(content, mimeType, filename,
				contentId);
		emailAttachment.setSize(content.length);
		attachments.add(emailAttachment);
	}
   /**
   * 说明:获得附件
   * @return List<EmailAttachment>
   * @update 2012-9-21 上午11:31:47
    */
	public List<EmailAttachment> getAttachments() {
		return attachments;
	}
}